/**
 * @author - lhn
 * @version - 1.0.0
 * @description - 工具接口
 * @file - IUseTools.ts
 * @datetime - 2025/2/28
 * @editor - lhn
 */


interface IUseTools {
  /**
   * 防抖函数
   * @param {Function} fun
   * @param {number} duration - 延迟执行的时间/毫秒
   * @return {Function}
   * */
  debounce: (fn: Function, delay: number) => Function;

  /**
   * 节流函数
   * @param {Function} fun
   * @param {number} duration - 执行的时间/毫秒
   * @return {Function}
   * */
  throttle: (fn: Function, delay: number) => Function;

  /**
   * 深拷贝
   * @param target 目标对象
   * @returns 拷贝对象
   */
  deepCopy: (target: any) => any;

  /**
   * 判断两个对象是否相等
   * @param obj1 对象1
   * @param obj2 对象2
   * @returns {boolean} - true: 对象相等，false: 对象不相等
   */
  objCompare: (obj1: object, obj2: object) => boolean;

  /**
   * n 以内的质数
   * @param n
   * @returns
   */
  primeNumber: (n: number) => number[];

  /**
   * 验证回文串
   * @param {string} str 字符串
   * @returns {boolean} 是否为回文串
   * */
  isPalindrome: (str: string) => boolean;

  /**
   * 比较版本号
   * @param {string} version - 版本号
   * @returns 迭代器
   * 语义版本规范 x.y.z[-p]
   */
  walk: (version: string) => Generator<string, void, unknown>;
}

export default IUseTools;